home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 16
/
Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso
/
Aminet
/
misc
/
emu
/
QDOS1.lha
/
QLboot
/
DOCs
/
Amiga-QDOS.doc
next >
Wrap
Text File
|
1996-10-15
|
61KB
|
1,838 lines
____ _ _ _ ____ ____ ____ ____ ____ ____
/ __ \ / \/ \ | | / ___| / __ \ / __ \ | _ \ / __ \ / ___|
| |__| || || || | _ | |__| | __ | | | || | \ \| | | | \_ \
| __ || |\/| || || |__| || __ | |__| | |_/ \| |_/ /| |__| | __\ \
|_| |_||_| |_||_| \____/ |_| |_| \___/\/|____/ \____/ |____/
S O F T W A R E Q D O S E M U L A T O R F O R T H E A M I G A
--------------------------------------------------------------------------
1m4mVERSION 3.23 ARCHIVE CONTENTS0m
'QDOS4amiga1.lha' QL clone (binaries and documentation)
'QDOS4amiga2.lha' QL clone (assembly source)
'QDOS4amiga3.lha' QL clone (QDOS utilities disk)
Mount the QLfilesystem, then copy the files from
this archive onto a QDOS format disk.
--------------------------------------------------------------------------
1m4mAMIGA-QDOS v3.23 FEATURES0m
* FASTER than the original QL
* LOADS/SAVES to QL floppy disks
* SOUND supported in full (all possible convolutions of BEEP)
* SYSTEM VARIABLES movable (even into FAST RAM).
* 2ND-SCREEN fully usable (like MINERVA ROM)
* SCREEN modes 4 and 8 BOTH supported
* KEYBOARD history from standard <ALT><ENTER> combination
* ALL known machines supported A500, A500+, A600, A1200, A4000 etc
* FOR COMPATIBILITY, data and instruction caches can be enabled/disabled
* FOR COMPATIBILITY, emulates MOVE SR,<ea> in user mode on 68020 & above
(the instruction is priviledged on 020+).
* FOR COMPATIBILITY, emulates MOVEP instruction on 68060
(the instruction is not implemented on the 68060).
* QDOS utilties disk included with release
* FILESYSTEM for reading and writing QDOS disks from AmigaDOS
* BASED ON a JS ROM with many JS ROM bug fixes.
* SOURCE included
--------------------------------------------------------------------------
1m4mWHAT'S NEW IN VERSION 3.230m
* SOUND supported in full (all possible convolutions of BEEP)
* SYSTEM ROM can be re-located to run from FAST RAM
* SYSTEM VARIABLES movable (even into FAST RAM).
* 2ND-SCREEN fully usable (like MINERVA ROM)
* SCREEN modes 4 and 8 BOTH supported
* KEYBOARD history from standard <ALT><ENTER> combination
* ALL known machines supported A500, A500+, A600, A1200, A4000 etc
* Many JS ROM bug fixes.
--------------------------------------------------------------------------
1m4mQUICK OVERVIEW0m
This is a major reworking of Rainer Kowallik's QL emulator for the
Amiga. Most of the new features have been added by Mark J Swift
(e-mail: msw@blackpool.ac.uk) - Rainer is no-longer involved in
the project. The release includes full assembler source and a QDOS
utilities disk. Also included is a filesystem by Francis N Swift for
handling QDOS disks from the Amiga side.
--------------------------------------------------------------------------
1m4mQL FILESYSTEM0m
The QL filesystem is a handler written by F N Swift that allows
transparent access to QDOS (QL) disks. The file system requires a device
driver that can read and write PC style sectors, such as mfm.device or
messydisk.device.
The QL filesystem makes it possible to insert a QL disk into an Amiga
drive and use it like any other disk. Files can be renamed, deleted or
copied to and from QL disks, file dates can be set, disks can be relabled
and so on...
Please read QLfilesystem.doc for more information.
--------------------------------------------------------------------------
1m4mTHE SINCLAIR QL...0m
,--------------------------------------------/|/|/|/|/|/|/|/|/|/|/|
/ /_//_//_//_//_//_//_//_//_//_//_//_//_//_/ / /|
/ /_//__//_//_//_//_//_//_//_//_//_//_//_/ / / / /
/ /_//____//_//_//_//_//_//_//_//_//_//____/ / / /
/ /_//__//_//_//_________________//_//_//__/ /_____________________/ /
/_'__________________________________________/|__.====== .====== __|/
|_____________________________________________:======================/
|________________________________________________________________|/
The Sinclair QL is a black slab-like computer based around Motorola's
68008 micro-processor. The QL was launched as the follow-up to the
ZX Spectrum, aimed at the business market rather than the games market
and was supplied with wordprocessor, spreadsheet, database and charting
programs. It features a fully multi-tasking operating system (QDOS)
and a very good built-in BASIC. The QL failed to achieve the mass-market
appeal of its predecessor, but nevertheless attracted a large dedicated
user base... which is still going strong.
--------------------------------------------------------------------------
1m4mQUICK START0m
1mINSTALLING THE EMULATOR0m
1. Create a directory on your destination volume for the Amiga-QDOS
binaries and documentation.
2. Make an assignment to this directory as "QLBOOT:". Consider making
the same assignment in your start-up sequence.
3. Copy the contents of the archive QDOS4amiga1.lha to QLBOOT:
4. Move the contents of 'c','devs' and 'l' to the relevant system
directories and remove them from QLBOOT:.
1mMOUNTING THE QL FILESYSTEM0m
Under WB1.3 mountlst.ql should be placed in devs: and messydisk.device
should be available. Type 'MOUNT QL0: from devs:mountlst.ql' in a
Shell or add the command to your start-up device and REBOOT.
Under WB2 with crossDOS, make sure that you have at least MOUNT 40.4
and SETPATCH 40.16 installed (distributed with AmiCDFS). Then install
as in WB3 below. If you do not have crossDOS, install as in WB1.3.
Under WB3 copy the provided QL0 and QL1 definition files to
devs:dosdrivers. Check that your start-up sequence contains the
command 'MOUNT Devs/dosdrivers/~(#?.info)', then REBOOT.
1mRECREATING THE QDOS UTILITIES DISK0m
1. Mount the QLfilesystem.
2. Copy QDOS4amiga3.lha to RAM:
3. Double-click on the 'QLdisk.unLHA' script icon.
Insert a blank disk into DF0: at the appropriate moment... then wait.
Rename the resultant QDOS (QL) disk as 'QLutils:'
Alternatively you may launch 'QLdisk.unlha' with QDOS4amiga3.lha
SHIFT-selected. This way the archive need not be copied to RAM:
1mSTARTING THE EMULATOR0m
1. Double-click on the 'Start_QDOS_UK' icon.
2. At the F1/F2 prompt, insert QLutils: into DF0: and press F1.
--------------------------------------------------------------------------
1m4mA QUICK TOUR OF THE QL0m
When you first switch on a QL (or when you run the emulator) you are
presented with a screen requiring you to press F1 or F2.
On an actual QL, pressing F2 initialises the 3 standard windows (BASICs
#0, #1 and #2) such that they do not lie off the side of the screen when
viewed on a PAL TV. Since the video on the Amiga is very much compressed
relative to the QL, it is always best to choose the monitor setting - F1,
on the emulator.
Upon pressing F1 or F2, the system will attempt to load and run a file
called 'BOOT' from the disk inserted in the internal drive (FLP1_). With
the QDOS QLutils: disk inserted, a BASIC BOOT program will run that loads
a number of toolkits and installs a small RAM disk.
In any case, you will eventually be presented with a flashing cursor. This
is your bog-standard home-computer flashing-cursor, waiting for a NEW
program to be typed-in and RUN, or LOADed from floppy disk.
For example, if you type in the following:
3mNEW0m
3m10 PRINT "Hello World!"0m
3mRUN0m
...the words 'Hello World!' are printed on screen.
If you add the following:
3m20 GOTO 100m
3mRUN0m
...then the same words will be repeatedly printed until you BREAK the
program with the keys <CTRL><SPACE>.
You can save the program to the disk in the internal drive with the
command:
3mSAVE FLP1_HELLOWORLD_bas0m
or, if there is no room on disk, you can FORMAT a new disk with the
command:
3mFORMAT FLP1_WORKDISK0m
...which formats the disk in the internal drive and gives it the name
'WORKDISK'. Remember there is no going back once a disk is formatted.
To list the contents of the internal floppy drive type:
3mDIR FLP1_0m
Loading a BASIC program from floppy disk is a simple matter:
3mLOAD FLP1_PLAY_MUSIC_bas0m
You can then type:
3mLIST0m
...to see the BASIC listing, or:
3mRUN0m
...to execute the BASIC program.
To execute a machine code task, use the EXEC_W keyword.
For example:
3mEXEC_W FLP1_XCHANGE0m
...will load and execute the stated program from the disk in the
internal drive. At the same time it will suspend BASIC ( _W = wait ).
To multi-task, use EXEC and press CTRL-C to task switch.
--------------------------------------------------------------------------
1m4mCUSTOM STARTUP0m
The default 'Start_QDOS' icons are configured to make best-use of your
machines' RAM. For example on a QDOS will automatically be loaded into
FAST RAM (if available) which is significantly faster than CHIP. In some
cases however it may be that you want to force a particular configuration.
For example Running QDOS from CHIP makes for a significantly more QL-like
(and hence QL compatible) environment than running from FAST RAM.
The directories CUSTOM_UK and CUSTOM_DT contain customised start-up icons
for different machine configurations.
3mQDOS_128K0m
This icon gives you a memory configuration similar to the original
unexpanded 128K QL.
3mCHIP_ONLY0m
Run QDOS from CHIP memory, and ignore all memory expansions.
3mA500_RANGER_ONLY0m
For A500s only. Ignore all other memory ranges and run QDOS from RANGER
memory (address $C00000 onwards). A memory board fitted in the trap-door
beneath the machine gives you this type of memory.
3mA500_EXPANSION_ONLY0m
For A500s only. Ignore all other memory ranges and run QDOS from EXPANSION
memory (address $200000 onwards). Some A500 peripherals that fit to the
expansion port on the left of the machine give you this type of memory.
1mCREATING YOUR OWN CUSTOM START-UP ICON0m
If none of the provided custom start-up icons reflect the set-up you
require for your machine, it is possible to create your own. Click on any
start-up icon and select copy (WB 2.0), or duplicate (WB 1.3). Click on
the copy and rename it accordingly. Go to information from the workbench
menus and change the tool type arguments as follows:
3m-m<lomem>-<himem>0m
This sets the area of memory available to QDOS. <lomem> corresponds to the
start of the system variable area and <himem> corresponds to RAMTOP.
3m-q<QDOS system ROM>0m
This sets the name of the required QDOS system ROM. The default name is
'SYS_cde'
3m-p<patcher ROM>0m
The patcher ROM does most of the work of getting the almost QL-like system
ROM to work on the Amiga. The default name is 'MAIN_cde'
Following all other parameters is a list of ROMs to load.
--------------------------------------------------------------------------
1m4mQDOS SYSTEM ROM0m
The Amiga-QDOS system ROM is a JS equivalent, with all machine dependant
routines patched out, a number of bug fixes, in-built exception handling
and improved floating-point output routines.
It is possible to edit and print floating point numbers in up to 8 digits
before going into E notation. QDOS normally enters E notation after 7
digits, which can make it difficult if you're working with long integers
or 32 bit addresses.
The exception handling routines allow programs to terminate gracefully
should an instruction error, bus error or general exception occur.
The move sr,<address> instruction in user mode is emulated in software for
machines with 680X0 processors. This instruction is not priviledged on the
68000/68008, and can be executed while in user mode. On later processors
the instruction can only be executed in supervisor mode, and causes a
PRIVILEDGE VIOLATION if executed in user mode.
Programs (user or supervisor) can be single-stepped by setting bit 15 of
the status register. The current register contents are dumped to BASICs'
#0 with each depression of the <SPACE> bar. Pressing <ENTER> exits trace
mode. If #0 is not a CON channel, TRACE information is listed to the
channel continuously without any need of user intervention.
External ROMs handle all machine dependant activities; such as display,
keyboard and system time. The system recognises EPROMs at $1C000 and $C000
only. The external ROM "MAIN_cde" hijacks the BOOT procedure temporarily
to look for ROMs situated in memory peculiar to the Amiga.
--------------------------------------------------------------------------
1m4mO/S HOOKS0m
The external ROM "MAIN_cde" does most of the work necessary to get the
QDOS system ROM operating correctly by hooking itself into the relevant
system vectors. L_QDOS currently puts "MAIN_cde" at $1C000, well within
the first 512 K of CHIP RAM. Once loaded, "MAIN_cde" searches for
expansion ROMs situated in areas of memory peculiar to the Amiga.
1mADDITIONAL BASIC EXTENSIONS0m
There are seven keywords associated with "MAIN_cde"
3mRESET_TOP <oldtop>,<newtop>0m
This keyword allows users to re-boot with a new RAMTOP.
Altering RAMTOP for Amiga-QDOS is not as simple as poking the system
variable SV_RAMT and doing a re-boot, because AmigaQDOS ROMs (VDU, KBD
etc) are ALWAYS loaded between RAMTOP and the end of physical memory.
This means that moving RAMTOP requires you to move the ROMs also.
This keyword does all the dirty work for you and takes two parameters.
<oldtop> is the old top of physical memory and <newtop> is the required
top of physical memory.
For example on an A500, having booted Amiga-QDOS to make use of ranger RAM
at $C00000-$C80000 and wishing to reboot leaving ranger RAM free and using
the bottom 512K only, one could use the command:
3mRESET_TOP hex("C80000"),hex("80000")0m
or without TK2 or PDTK...
3mRESET_TOP 13107200,5242880m
afterwards, to re-use the memory - issue the command...
3mRESET_TOP 524288,131072000m
3mRESET_SV <newsv>0m
This keyword allows users to reposition the system variables and re-boot.
For example to move the system variables so as to free the second screen
area:
3mRESET_SV 1966080m
To move the system variables back to their default position:
3mRESET_SV 1638400m
3mRESET_EXTENTS <oldtop>,<newtop>,<newsv>0m
This keyword allows users to simulataneously reposition the system
variables and RAMTOP and then re-boot.
For example on an A4000 with 2MB CHIP and 2MB of expansion ($7E00000-
$8000000), one could move the QDOS work area from CHIP to FAST RAM with
the following command:
3mRESET_EXTENTS HEX("200000"),HEX("8000000"),HEX("7E00000")0m
QDOS tasks loaded into FAST RAM, run significantly faster. Running QDOS in
FAST RAM relies on QDOS tasks being 32-bit clean.
3mICACHE_ON0m and 3mICACHE_OFF0m
These two commands allow the instruction cache to be turned on and off
respectively. Amiga-QDOS boots with the instruction cache disabled.
Turning the instruction cache on can speed up QDOS tasks considerably but
relies on tasks to be well behaved (and not self modifying).
3mDCACHE_ON0m and 3mDCACHE_OFF0m
These two commands allow the data cache to be turned on and off
respectively. Amiga-QDOS boots with the data cache disabled.
3mCOPYBACK_ON0m and 3mCOPYBACK_OFF0m
These two commands allow copyback mode to be turned on and off
respectively. Amiga-QDOS boots with copyback mode disabled.
--------------------------------------------------------------------------
1m4mCLOCK0m
1mINITIALISATION0m
The system fully supports the Amiga's battery backed-up clock, and will
provide you with the correct date and time by way of the SuperBASIC
commands DATE and DATE$ or the equivalent machine code TRAP instruction.
If your Amiga does not include a clock, the system time will default to a
value passed from AmigaDOS.
1mBUGS0m
Doesn't find the battery backed-up clock in the A4000. The hardware has
probably moved.
--------------------------------------------------------------------------
1m4mVDU0m
1mSECOND SCREEN0m
The JS system ROM is altered to allow the system variables to be moved and
for the second screen to be used. The MODE command is altered accordingly,
to act more like the Minerva version.
If you are familiar with the way Minerva handles its screens then you
should be able to understand the following.
The normal parameters for MODE still apply but if a second parameter is
given, then both parameters are passed on to the MT.DMODE system trap in D1
and D2 without alteration. D1 then takes on the following meaning:
bit(s) function (clear) | (set)
0 other screen visible | blank
1 default screen visible | blank
2 other screen mode mode4 | mode8
3 default screen mode mode4 | mode8
4 show screen scr0 | scr1
5 set default screen scr0 | scr1
6 D1 usage D1.W | D1.B (D1.W - msb all ones)
7 opposite to bit 6 i.e bits 7/6 always = 0/1 or 1/0
8-15 ignored if bit 6 set. Otherwise...
8-13 associated with bits 0-5 (clear=set/clr, set=toggle)
14 redraw other screen
15 redraw default screen
Thus to clear, set or toggle just ONE attribute of the display mode, the
mode command takes the following form:
3mMODE -128+n*(k-256),-10m
where:
(k=0) | (k=1) | (k=257)
(n=1) - other screen state: visible | blank | toggle
(n=2) - default screen state: visible | blank | toggle
(n=4) - other screen mode: 4 colour | 8 colour | toggle
(n=8) - default screen mode: 4 colour | 8 colour | toggle
(n=16) - show screen: scr0 | scr1 | toggle
(n=32) - set default screen: scr0 | scr1 | toggle
You can of course mix and match...
3mMODE -128 + 2*(0-256) + 16*(1-256) + 32*(1-256),-10m
...performs the following:
default screen = Scr1
default screen = visible
show Scr1
Note that the default screen is set BEFORE any other operations are
performed.
It is now possible to launch tasks in Amiga-QDOS that default to scr1 for
output:
3mRESET_SV 196608 0m move system variables & reset
3mMODE -128+32*(1-256),-10m set default screen to scr1
3mEXEC flp1_XCHANGE 0m launch application
3mMODE -128+32*(0-256),-10m re-set default screen to scr0
CTRL-C will switch screens if the enabled task requires it. You can also
switch screens by pressing CTRL-TAB, or by poking the relevant hardware
register.
1mHARDWARE REGISTERS0m
Amiga-QDOS emulates the hardware register MC_STAT ($18063) to an extent.
You can blank the screen by setting bit 1. You can switch screens by
toggling bit 7. You can switch screen modes by toggling bit 3.
1mMOUSE POINTER0m
The emulator can display, and return the screen co-ordinates of a simple
mouse pointer (SPRITE). Although the mouse routines work correctly with
QRAM pointer software, the co-ordinates of the sprite do not correspond
with the co-ordinates of the QRAM pointer. When using QRAM, you should
therefore not have the Amiga SPRITE pointer active.
1mADDITIONAL BASIC EXTENSIONS0m
There are five keywords associated with the VDU driver.
3mBLIT_OFF0m
The BLIT_OFF command turns all blitter activity off. This will prevent the
VDU driver from refreshing the QL screen.
3mBLIT_ON0m
The BLIT_ON command turns blitter activity back on allowing the VDU driver
to properly refresh the QL screen.
3mSCR_PRIORITY <inc>, <bnd>0m
This command sets the speed at the VDU driver refreshes the QL screen. It
allows the blitter to move (inc/bnd)*(1/16) th of the screen every 1/50th
of a second - for example:
3mSCR_PRIORITY 4,10m
This will refresh (4/1)*(1/16) = 4/16 =1/4 of the screen every 1/50th of
a second.
3mSCR_PRIORITY 8,10m
This will refresh (8/1)*(1/16) = 8/16 =1/2 of the screen every 1/50th of
a second.
3mSCR_PRIORITY 16,10m
This will refresh (16/1)*(1/16) = 16/16 = whole of the screen every 1/50th
of a second.
If you want maximum CPU speed and don't mind a slow display, you could
try:
3mSCR_PRIORITY 1,20m
Please experiment, but remember - refreshing more than half the screen in
1/50th of a second is just not physically possible. The default setting is
SCR_PRIORITY 4,1.
3mPTR_ON0m
This command displays a SPRITE on screen, relating to the position of the
mouse pointer.
3mPTR_OFF0m
This command hides the SPRITE relating to the position of the mouse
pointer.
1mBUGS0m
Due to a timing fault, for certain values of SCR_PRIORITY the first byte
of every 32 nd line flickers spuriously. The VDU driver could time BLITTER
access to screen memory more precisely, if the BLITTER commands were part
of a general COPPER list. This would reduce screen flicker since memory
access would sync with the vertical refresh automatically.
--------------------------------------------------------------------------
1m4mACE0m
This ROM takes over from the blitter providing QL screen emulation via the
processor. On 68030 processors and above, screen emulation is both
smoother and faster. On earlier processors it can be too processor
intensive - so is not enabled on the F1/F2 boot screen but can be enabled
with the ACE_ON command. The ACE routines (written by S N Goodwin) have an
advantage over the blitter routines in that they fully support BOTH MODE 4
and MODE 8.
1mWhy?0m
The 32 bit CPU can convert the QL interleaved display into two Amiga bit
planes faster than the Blitter in the AGA chip-set. If the CPU is used the
Qdos kernel in chip RAM runs faster and the top display update rate is
increased to a full flicker-free 50/60 Hertz. You might also like to try
it on OCS/ECS systems with a processor accelerator, but the 16 bit chip
RAM will limit the cpu's advantage. If you only have a 68000 you're almost
certainly better off using the blitter.
1mHow?0m
The ACCELERATOR is a normal Qdos server in the polled list, performed 50
times per second while the machine is in User mode (and skipped in
Supervisor mode). It does the same job as the blitter interrupt server, so
that is turned off - to free extra bus bandwidth - once ACE is up and
running.
1mReally, How?0m
The method relies on the caches for code and data and is optimised for the
68040. We copy alternate bytes from Qdos screen memory to alternate
bit-planes. The method used in ACE_CODE reads eight bytes at a time then
swaps registers around to generate two or three long words for the
bitplanes. This is much faster than the use of MOVE.B or MOVEP for byte
access.
This program detects the data cache on the 68030/40/60 and temporarily
turns it off for top speed when reading and writing chip memory.
1mACE v BLITTER - raw CPU power versus custom chips0m
TEST RESULTS for ACE runing on a CBM A4000/040 with Chip RAM only or with
copyback on or off in Fast RAM. These tests used ACE version 3.15, MODE 4
and the DIY Toolkit timers to time one 10,000 iteration FOR loop.
ACE_PRIORITY CHIP QDOS FAST QDOS COPYBACK
16,1 17.18 4.66 3.46
16,2 5.04 1.50 1.12
16,3 4.08 1.22 0.90
16,4 3.72 1.10 0.84
16,5 3.52 1.06 0.80
16,6 3.42 1.02 0.78
16,7 3.34 1.00 0.76
16,8 3.28 0.98 0.74
At ACE_PRIORITY 16,N the 68040 spends about three quarters of 1 in N
fields servicing the display. Chip RAM access time predominates. Note that
Copyback speeds up SuperBASIC by over 30 per cent compared with Write
Through cacheing, and the emulator is four or fives times faster if you
run it from fast RAM even though the 'QL ROM' is still in Chip!
In a system with 32 bit fast memory the speed of tasks and extensions is
much increased, but the screens, Qdos and SuperBASIC interpreter routines
remain in chip memory, for compatability reasons, and that is relatively
slow. CPU caches can soak up some but not all of the difference.
Both blitter and CPU display updates are slowed if chip memory is already
busy, e.g. because of Qdos ROM reads or screen writes. The difference is
that the blitter contention is asynchronous, while the CPU is the only
thing (other than DMA) accessing chip memory during ACE screen updates.
1mADDITIONAL BASIC EXTENSIONS0m
There are five keywords associated with ACE.
3mACE_OFF0m
The ACE_OFF command turns off ACE screen emulation and re-enables blitter
screen emulation.
3mACE_ON0m
The ACE_ON command disables blitter screen emulation and enables ACEs'
processor dependent screen emulation.
3mACE_PRIORITY <inc>, <bnd>0m
This procedure determines the number of 2K chunks and number of fields per
update, 1..16 and 1..255 respectively. The default 8,2 is the equivalent
of SCR_PRIORITY 4,1.
The parameters correspond to those of SCR_PRIORITY.
The first parameter controls the smoothness of the update, in units of
1/16 of a screen. If you have a fast processor (68040 or better) you can
use 16 and have the entire screen updated in one go - twice as fast as the
quickest blitter setting, 8,1 - but this is too much for a 25 MHz 68030,
which struggles to complete a field in 20 milliseconds. Lower values mean
the processor tries to do less in a single field, which means you may see
a line across the screen during rapid screen updates, at the point where
one update stops and the next takes over.
Qdos does not allow an interrupt server to take more than 20 mS to run -
the time up to the next interrupt - so you should not experiment with high
values for ACE_PRIORITY unless you have a fast processor. Ignore this and
Qdos may lock up!
The second parameter controls the number of fields that are displayed
between one full (or partial) update and the next. A value of 1 means that
ACE runs 50 times per second (every 1 field) which imposes a heavy CPU
load but gives the most rapid screen response. A value of 2 means that ACE
runs every other frame; 3 means ACE runs once every three frames, giving
more time for programs at the price of only about 17 full or paritial
updates per second. The second value can be up to 255, which leaves 99.6
per cent or more of the CPU time for 'real' programs but gives a very slow
screen update - about one update every 5.1 seconds! If you have fast
memory you're probably better off using the blitter than ACE in this case.
ACE_ON and ACE_OFF link and unlink the interrupt handler. ACE_PRIORITY
reports 'not found' if you try to use it when ACE is not linked in.
3mACE_RATE%0m
This function returns the number of fields that are output to the screen
between one ACE update and the next.
3mACE_SIZE%0m
This function returns the number of 2K sections of the Qdos screen to be
copied to Amiga bitplanes at each update.
Together these functions ACE_RATE% and ACE_SIZE% let you read the current
ACE_PRIORITY settings.
--------------------------------------------------------------------------
1m4mKEYBOARD0m
1mQL RESET0m
You can perform a QL cold-reset by holding down CTRL-SHIFT-ALT-TAB. It is
therefore possible to load an expansion ROM into memory at $C000, and have
the emulator install it upon the next cold-reset.
1mSECOND SCREEN0m
It is possible to flick between the second screen and the standard screen
by pressing CTRL-TAB.
1mINTERRUPTS0m
You can simulate a level 7, 5 or 2 interrupt by pressing CTRL-ALT and the
relevant number (i.e. 7,5 or 2). The level 7 interrupt (CTRL-ALT-7)
performs the equivalent of a non-maskable interrupt (NMI) and can be used
to resume the machine from fatal system hang-up. It Restores BASIC'S A6
and A7, sets its Priority to 32, releases the Job and continues execution
at the Warm-start address.
1mSPECIAL KEYS0m
Keys F6-F10 produce the same codes as SHIFT F1-F5
1mNEW TRAP #1 CALL0m
Amiga-QDOS includes a new foreign Keyboard Manager TRAP #1, D0=$27,
D1=Address of table, that allows for a customisable keyboard table (the
default is German).
1mADDITIONAL BASIC EXTENSIONS0m
There are six keywords associated with the keyboard.
3mKEYDT0m
This command sets a German keymap (the default)
3mKEYUK0m
This command sets a UK keymap (only available if you load KEYUK_cde).
3mPTR_LIMITS [<Xleft>,<Ytop>,<Xright>,<Ybottom>]0m
This command sets limiting bounds for the position of the mouse pointer.
The default limits are 0,0,256,256
3mPTR_INC [<Xdist>,<Ydist>]0m
This command sets how far the mouse must be moved before the KEYROW
function registers cursor movement. By default Xdist is 4 and Ydist is 8.
3mPTR_X%0m
This function returns the X coordinate of the mouse pointer. Mouse
coordinates are measured in low resolution pixels (a limit imposed on
Amiga sprites).
3mPTR_Y%0m
This function returns the Y coordinate of the mouse pointer. Mouse
coordinates are measured in low resolution pixels (a limit imposed on
Amiga sprites).
--------------------------------------------------------------------------
1m4mSOUND0m
QDOS sounds are supported in full, via the SuperBASIC BEEP command and its
equivalent machine code MT.IPCOM command (Trap#1 with d0=$11).
--------------------------------------------------------------------------
1m4mSER DEVICE0m
The serial device is pretty reliable - even at high speeds!
1mSER DESCRIPTION0m
Following is a complete description of the SER device syntax, which
includes a number of useful additions.
OEMS - ODD, EVEN, MARK or SPACE parity (default = none)
IH - IGNORE or use HANDSHAKE (default = ignore)
RNCL - RAW, CR/LF, CR or LF end of line protocol (default = raw)
ZF - CTRL-Z or FORMFEED end of file (CLOSE) protocol
(default= none)
For example the command OPEN#4;"SER1INF" opens the serial channel to
ignore H/W handshakes, translate end of line characters into CR/LF and
send a form-feed at the next CLOSE#4.
On input, CR, LF and the CR/LF couple are translated into a single LF
character - unless RAW is selected as the end of line protocol.
In future releases 'IH' may be extended to 'IHX', allowing for Xon/Xoff
(software) handshake.
--------------------------------------------------------------------------
1m4mPAR DEVICE0m
The parallel device is buffered and interrupt driven - so within the
constraints of printer speed, output via the parallel port is very fast.
1mPAR DESCRIPTION0m
Following is a complete description of the PAR device syntax which
includes useful end of line and end of file protocols.
RNCL - RAW, CR/LF, CR or LF end of line protocol (default = raw)
F - use FORMFEED as end of file (CLOSE) protocol
(default = none)
For example the command OPEN#4;"PARNF" opens a channel to the parallel
port, translating end of line characters into CR/LF, and sending a form-
feed at the next CLOSE#4.
In future releases 'IO' may be added to the syntax, allowing for input
and output to the parallel device.
--------------------------------------------------------------------------
1m4mFLP DEVICE0m
The Format of a QDOS filename on the floppydisk is FLPn_name_ext, where
FLPn_ is the device name. FLP1_ represents the internal drive, FLP2_ the
first external drive and so on. Filenames consist of up to 32 characters.
The *D2D random access convention is emulated in full, so CP/M and MS-DOS
emulators should work without problems.
1mADDITIONAL BASIC EXTENSIONS0m
The floppy driver has a number of associated keywords. The commands MOUNT
and DSKCNG are necessary for older drives that do not respond correctly to
disk changes, or do not supply a disk ID. The command DISKCOPY is included
because it is incredibly useful. FLP_USE, PROG_USE, DATA_USE etc are
implemented for compatibility with QL disk interfaces that invariably
include such commands.
3mMOUNT <drive>0m
Use MOUNT 1 for FLP2_, MOUNT 2 for FLP3_, or MOUNT 3 for FLP4_. The
emulator tries to read a disk ID from every drive, and only allocates
drive buffers for those drives that respond correctly. Unfortunately some
older drives do not have this feature, and on such drives you will need
to use the MOUNT command. Issue this command once only, immediately after
a boot, and only if the drive is not recognised.
3mDSKCNG <drive>0m
Use DSKCNG 1 for FLP2_, DSKCNG 2 for FLP3_, or DSKCNG 3 for FLP4_. The
Amiga hardware automatically recognises when you insert a new disk into a
drive. Unfortunately some older drives do not have this feature, and on
such drives you will need to use the DSKCNG command each time you insert
a disk afresh.
3mDISKCOPY [#<channel>]0m
DISKCOPY duplicates the disk in Flp1_ onto the disk in Flp2_. You require
two drives in order to use this command. DISKCOPY will ask you to insert
the source and destination disks before proceeding. Messages are printed
on the specified channel, or to #0 if no channel number is given. It is
possible to BREAK from this command with CTRL-SPACE.
3mFLP_USE <name>0m
Sets the name of the floppy disk system. By default the name of the floppy
disk system is 'FLP', but this can be changed for example to 'MDV' or any
other three-character string.
3mPROG_USE <name>0m
Sets the default device/directory for programs and executables.
3mDATA_USE <name>0m
Sets the default directory data files.
3mSPL_USE <name>0m
Sets the name of the default copy/spool device/directory.
3mDEST_USE <name>0m
As SPL_USE except that this command appends an underline the the <name> if
none is present.
3mPROGD$0m
Returns the name of the default program device/directory.
3mDATAD$0m
Returns the name of the default device/directory for data files.
3mDESTD$0m
Returns the name of the default copy/spool device/directory.
--------------------------------------------------------------------------
1m4mJAN DEVICE0m
The JANus device driver gives you access to the Harddisk from the IBM
Sidecar within QDOS.
The JANus device driver expects the program QLDISK.COM running on the IBM
side. This program is also included in source format (QLDISK.PAS) and must
be compiled with TURBO pascal 3.0! Any filename has the form: JAN1_name_ext
where 1 [,2,3,4,5,6,7,8] has no function. The extension is converted from
_ext to .ext automatically. Names consist of capital letters only and must
not be longer than 8 characters.
Subdirectories and file conventions of MS-DOS are used. If you try to read
MS-DOS files from QDOS, you will experience some trouble, since QDOS needs
a 64 byte fileheader, which is of course not present in MS-DOS files. The
other way around, you will find 64 additional bytes at the top of any QDOS
file, when you try to read QDOS files from the IBM side.
1mADDITIONAL BASIC EXTENSIONS0m
3mCHDIR <"path">0m
changes the subdirectory path (CD on IBM)
3mMKDIR <"name">0m
make subdirectory (MKDIR on IBM)
3mRMDIR <"path">0m
remove subdirectory (RMDIR on IBM)
3mSHODIR0m
display the actual path at channel #1
3mJAN_USE <"abc">0m
set up a new device name for JAN (eg MDV)
At present, the emulator cannot access data on hard-disks, except via the
JAN device on JAN drives on a machine with a Bridgeboard installed.
--------------------------------------------------------------------------
1m4mHARDWARE DIFFERENCES0m
1mTAS INSTRUCTION PROBLEMS:0m
This emulator is a good QL-clone, however there are hardware differences
that may cause initial problems:
The Amiga hardware does not allow the CPU two contiguous bus cycles. This
means that any READ-MODIFY-WRITE cycle fails, and as a result the machine-
code instruction 'TAS' does not function correctly on the Amiga.
It must be understood that a fair number of QL programs have been compiled
from BASIC and that both the leading QL BASIC compilers 'TURBO' & 'QLIB',
contain TAS instructions - as do all TURBO'd and QLIB'd tasks. It follows
that without modification a large number of QL programs will fail.
To remedy the problem, Line-A (instruction: %1010111XXXXXXXXX) is
programmed to emulate TAS, and a utility is included on the 'QLutils' disk
that makes QL tasks Amiga friendly by replacing all TAS instructions with
Line-A.
1mNO_TAS0m
This program removes TAS instructions in recognised TURBO'ed and QLIB'ed
tasks, substituting equivalent code. If the code is not thus recognised,
TAS will be replaced by a Line-A instruction (which is programmed to
emulate TAS but is not QL-compatible) or by extending the code.
3mFIXES FOR QLIBERATOR0m
The Q_Liberator runtime libraries contain a single TAS instruction...
TAS $8F(A6) in v3.22 and TAS $8F(A4) in the library used with the budget
compiler. As a result any program compiled to include libraries will also
contain this instruction.
NO_TAS automatically recognises QLIB'ed tasks, removes the TAS instruction
and substitutes equivalent code. The result is a task that is compatible
with a 'real' QL and runs within Amiga-QDOS without problems.
3mFIXES FOR TURBO COMPILER0m
The TURBO compiler package contains a single TAS $8F(A6) in PARSER_task
and two TAS instructions ( TAS $8F(a6) and TAS $17(a2) ) in CODEGEN_task.
Any program compiled with TURBO may also contain these instructions.
NO_TAS automatically recognises TURBO'ed tasks, removes the TAS
instructions and substitutes equivalent code. The result is a task that is
compatible with a 'real' QL and runs within Amiga-QDOS without problems.
3mFIXES FOR NON QLIB/TURBO CODE0m
If the code is not recognisable as having been produced by QLIB or TURBO,
NO_TAS will check the code and process it dependent on its size;
SMALL CODE FIX
If the code is less than 32K in size, NO_TAS will attempt to replace all
TAS instructions by a branch to an equivalent subroutine. The subroutine
is tagged onto the end of the code, so any file processed in such a way
will 'grow'. The result is a task that is compatible with both
Amiga-QDOS and a 'real' QL, but which might confuse tasks that make
assumptions upon their own length.
LARGE CODE FIX
If the code is bigger than 32K in size, TAS instructions will be
replaced by a Line-A instruction which is programmed to emulate TAS. The
Line-A code is INCOMPATIBLE with a 'real' QL. Code modified in this way
will cause a total system crash if run on a real QL.
With both the small and large code fixes, a disassembly is shown and you
will be asked whether or not to replace the code. Note however that the
program may display TAS instructions where none are present (i.e. within
program DATA). A good rule-of-thumb is that true CODE is usually
surrounded by other machine code instructions, whereas DATA is liberally
sprinkled with DC.Ws
1mRESTORE_TAS0m
Use this program to 'put-back' TAS instructions into programs that have
been altered by NO_TAS.
--------------------------------------------------------------------------
1m4mSOURCE FILES0m
The complete assembly source for the emulator is included with this
release.
1mEDITING THE SOURCE0m
If you need to alter a source file in any way, use an editor that
preserves TABS. If you use an editor that expands tabs to spaces during a
SAVE, you will find that file will increase in size dramatically - to a
point where it may exceed available disk space.
If you are looking for a reasonably small, WB1.3 compatible, simple,
TAB preserving PD text editor - try JED.
In order to view the source files correctly, tabs should be set to NINE
characters.
1mRE-ASSEMBLING THE SOURCE0m
Original sources were assembled in QDOS with GST's Macro assembler.
Current sources are assembled on the Amiga with A68k.
Expansion ROMs handle all Amiga specific functions, freeing the QDOS ROM
of any hardware dependent source. There are separate ROMs for VDU, Clock,
Keyboard, PAR device, SER device and FLP device. This makes de-bugging a
lot easier.
Each ROM has its own MAKE file. CD into a make directory and type the
name of the relevent script file to rebuild a particular ROM.
1mCOMMENTS IN THE SOURCE0m
I have commented the QDOS ROM source wherever it differs from either the
original JS source, or from Rainer Kowallik's version. Comments begin with
the characters ";*/" so are easily found. There are a number of keys
following these characters, that identify the kind of modification. These
are:
3m;*/note0m
This indicates a point that you should be aware of.
3m;*/mend0m
This indicates a bug fix.
3m;*/modify0m
This indicates that the code remains functionally equivalent to the JS
version, but is changed in some way.
3m;*/overlay0m
This indicates that the code differs significantly from the JS version.
3m;*/insert0m
This indicates a new piece of code.
1mKEY MODIFIERS0m
key modifiers precede a key, altering its meaning in some way.
3mundo0m
This indicates that previous amendments were discarded in favour of the
original JS source. For example:
3m;*/undomend0m
This means that an apparent bug, fixed in a previous release, was not a
bug after all.
3mbegin and end0m
These key modifiers bracket an amended section of code. e.g:
3m;*/begininsert and ;*/endinsert0m
These indicate the start and end of a section of code that is inserted
anew.
--------------------------------------------------------------------------
1m4mOTHER UTILITIES ON THE QL SUPPORT DISK0m
1mPLAY_SCALE_bas0m and 1mPLAY_MUSIC_bas0m
Two programs to demonstrate the capabilities of the SuperBASIC BEEP
command.
1mSER_TRANSFER_bas0m
This is an old program (formerly QLTRA_bas) that allows you to transfer
files between two QDOS machines via a cable and the serial device. The
program transfers a complete volume.
1mPOKE_DIGITS_bas0m
This utility allows you to alter QDOS so as to handle 5, 6, 7 or 8 digit
numbers before entering E notation. The emulator uses eight digit numbers
as opposed to the standard seven digits. If this proves to be a problem,
use POKE_DIGITS_bas to change back to seven digits.
1mBOOT0m
The boot program on the 'QLutils' disk loads a number of toolkits into
memory, and sets up a small RAM disk.
1mPD RAM-disk0m
The QL support disk now contains a Public domain RAM disk. It is
relatively slow but functions reasonably well. If anyone knows who wrote
it, please let me know so that I can credit the author in these docs.
1mPDTK_rext0m
This Freeware BASIC toolkit includes a small number of SuperBASIC
commands. Some of these are required by the programs SYS_REF, NO_TAS
etc., others are included because I find them incredibly useful. See the
documentation on the QLutils disk.
1mD68K_rext0m
This disassembly toolkit includes a small number of SuperBASIC commands to
help you to disassemble files and memory. The toolkit is required by
NO_TAS. See the documentation on the QLutils disk.
1mSYS_REF_task0m
SYS_REF is a utility that patches tasks & M/C which rely on the system
variables being at $28000, to work when the sys vars are elsewhere (i.e.
with the second screen enabled).
It has been tested on several programs (even TURBO) under Minerva and
Amiga-QDOS (with 2nd screen enabled), and WORKS!
SYS_REF also makes TURBO & TURBO-compiled programs 32-bit clean.
--------------------------------------------------------------------------
1mINTRODUCTION AND MOTIVATION0m
I bought my first QL in 1984 in Berlin, and since this time the QL has
proved to be a very handy tool for all kinds of computer work.
Unfortunately the QL was not very popular. It has an active user group,
but little software or hardware. With the arrival of the ATARI 520 ST and
the increasing popularity of the IBM clone the QL became less and less
interesting to new users, until eventually even Sinclair himself lost
interest.
So far so bad, but after checking the possible alternatives, there was no
computer that was any better than the QL. Then came the idea of building a
new computer with QDOS, a 68000 CPU and a reasonable keyboard -- but why
build a new computer, when you can buy one?
For this purpose the AMIGA seemed best suited. It is highly expandable and
has excellent hardware. Furthermore, it seemed easier to emulate a QL
screen on the AMIGA, than on the ATARI.
The emulator is based around a JS-ROM disassembly, expanded in some
features, and initially tested on a real QL. The BLITTER performs QL
screen emulation, which makes it a very fast process costing nearly no CPU
time. Keyboard emulation includes Ctrl-Alt-7 , KEYROW and IPC calls.
Additionally upon a system error, a default trap handler will tell you
what happened at what address, and return you to SuperBASIC.
Apart from the MicroDriVes and NETwork, the emulator implements all the
standard QL devices (CON_, SCR_, PIPE_, SER1, PAR, FLPn_).
RAINER KOWALLIK
--------------------------------------------------------------------------
1m4mADDENDUM0m
1mCONTINUING DEVELOPMENT0m
I am under the impression that due to recent commitments, Rainer has very
little time to make any further improvements to the emulator. Therefore,
in Rainers absence, I have taken on the responsibility for the emulators'
continuing development.
MARK J SWIFT
--------------------------------------------------------------------------
1m4mSOFTWARE OVERVIEW0m
This section contains a list of QDOS programs with specific implementation
notes for Amiga-QDOS. The list was part of the original emulator
documentation, so many of the problems mentioned may not now be relevant.
Most of the descriptions do not mention which version of the emulator the
software was tested on, or who did the testing. I have included a version
number and my initials wherever I have been able to confirm the validity
of a particular statement. If you would like to add you're own comments on
a particular program, please let me know.
MARK J SWIFT
--------------------------------------------------------------------------
1m4mSOFTWARE OVERVIEW - TOOLKITS0m
1mT. Tebby Toolkit 2 [Qjump]0m
This Toolkit is almost an essential for Working with QDOS. It provides you
with JOB handling, parameter passing facilities, a full screen BASIC
editor, a command line stack, wild card file functions, default devices,
definable keys and many other useful commands. It's a shame there's no
public domain equivalent.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
Use NO_TAS_task to remove all TAS instructions.
1mT. Tebby pointer interface and Window manager [Qjump]0m
For those who miss the Workbench and mouse handling, this is the QDOS
equivalent. There are more and more programs appearing on the QL that use
this interface as a front-end. It takes some getting used to.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
At the very least PTR_GEN must have TAS instructions removed. Other
files may also need to be fixed. Be very careful however not to
TAS-replace DATA.
1mT. Tebby Ramdisk [Qjump]0m
Bundled with the pointer environment and the QRAM 'workbench' equivalent.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
The original emulator documentation mentions this 'behaving strangely'
when you try to FORMAT a fixed RAM disk. I've not been able to pin-point
any problems whatsoever. Contains TAS instructions - use 'NO_TAS' to
remove them.
1mGiga-BASIC [ABC elektronik]0m
A lot of commands! - some useful, some superfluous. mostly concerned with
mouse and menu handling.
3mIMPLEMENTATION NOTES0m
Problems with compiler?
--------------------------------------------------------------------------
1m4mSOFTWARE OVERVIEW - LANGUAGES AND ASSEMBLERS0m
1mQLiberator (BASIC compiler) [Liberation Software]0m
This compiler has almost the same degree of usefulness as the T. Tebby
toolkit. The compiled programs are not among the fastest, but the compiler
can cope with nearly every program. It can include M-Code toolkits in the
object file, and produces small code when used in conjunction with the
resident runtime library. Compiled programs can be linked as resident
toolkits to the interpreter, and procedures can made accessible to BASIC.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
Use 'NO_TAS' to remove TAS instructions. Also use 'NO_TAS' on any
runtime libraries and any programs compiled prior to 'fixing'. Programs
compiled with a 'fixed' version of QLIBerator will not contain TAS
instructions and will work perfectly well on a QL or within Amiga-QDOS.
1mTurbo (BASIC compiler) [Digital Precision]0m
Much faster than the Qliberator, but can not pass parameters back to the
caller, and has many small quirks. Supercharge was a precursor to Turbo
with a very remarkable copy protection 'device'. Turbo itself is not
protected anymore.
3mIMPLEMENTATION NOTES - 3.23 MJS0m
Use the program NO_TAS_task to remove TAS instructions in PARSER_task
and CODEGEN_task. Once 'fixed' TURBO and TURBO compiled tasks will run
on Amiga-QDOS without problems.
If you wish to make use of the second screen under Amiga-QDOS (or
Minerva) you must use SYS_REF to remove all references to the system
variables (which are moved with 2nd screen enabled)
When SYS_REFing CODEGEN_task of the TURBO compiler, patch all references
EXCEPT the two that refer to $28010. These are not part of the CODEGEN
code, but are included in all TURBO compiled programs.
When SYS_REFing PARSER_task, or any other TURBO program replace ALL
references.
The SYS_REF'ed version of TURBO works under Minerva and Amiga-QDOS with
the second screen enabled. It produces code identical to the unpatched
version, so remember to patch all TURBO-compiled tasks!
SYS_REF makes TURBO & TURBO-compiled programs 32-bit clean.
1mFORTRAN 77 and PASCAL [Prospero Software]0m
These are the QDOS Versions of the widely used Prospero compilers. There
are few bugs (in my Version the Double Precision Arithmetic gives problems
when passed through Functions), and they give access to all QDOS
functions. They produce QDOS standard relocatable format and use the same
Linker that comes with the GST Macro assembler and the GST QC compiler.
3mIMPLEMENTATION NOTES0m
Program copy protection is by means of an EPROM that contains part of
the runtime library. You can get round this by using the supplied PRL
(Prospero Resident Library) from RAM, but you have to reload it after
every pass of the compiler. The supplied compiler supervisor does not
work on the Amiga?
1mComputer one PASCAL [Computer one]0m
A generally useful PASCAL compiler with a kind of integrated environment.
The newer version can generate executable Jobs, but it is still a P-code
Pascal. String handling is not implemented.
3mIMPLEMENTATION NOTES0m
This Compiler only works with less than 1MB RAM.
1mMetacomco PASCAL [Metacomco]0m
3mIMPLEMENTATION NOTES0m
Forget it !
1mLattice C [Metacomco]0m
The only full scale C implementation for the QL. There are bugs and the
Floating-point arithmetic is terribly slow. It uses QDOS standard
relocatable format as opposed to Metacomco's own format. As with Lattice
standard #ASM is not allowed, you have to write machine code programs
separately.
3mIMPLEMENTATION NOTES0m
Program copy protection consists of an 8K EPROM that occupies addresses
$C000 - $FFFF, mirrored at $E000. Make a copy from a normal QL with
SBYTES FLP1_QLC_ROM,48*1024,16*1024. This file can then be loaded on the
Amiga at the same address. Use CTRL-ALT-SHIFT-TAB to re-boot and
initialise the EPROM.
1mQC [GST]0m
An integer C without STRUCTures and UNIONs. It contains some bugs but
allows the inclusion of machine code via #ASM. Consider it as an
interesting alternative to Assembler. Output can be assembled via GST's
macro assembler.
3mIMPLEMENTATION NOTES0m
Not tested on Amiga-QDOS.
1mDigital C [Digital Precision]0m
Integer C without STRUCTures, UNIONs and #ASM. restricted to 32 Kbyte
code. Derived from a Public Domain C for CP/M.
3mIMPLEMENTATION NOTES0m
Not tested on Amiga-QDOS.
1mBCPL [Metacomco]0m
BCPL is an ancestor of C, and was the first Compiler for QDOS.
Floating-point arithmetic is implemented via procedures, and is thus
difficult to use. The compiler uses Metacomcos own special linker.
3mIMPLEMENTATION NOTES0m
Runs without problems on Amiga-QDOS.
1mLISP [Metacomco]0m
A very special Version of LISP, seemingly unrelated to common LISP.
Graphics and QDOS facilities are implemented.
3mIMPLEMENTATION NOTES0m
Runs without problems on Amiga-QDOS.
1mFORTH-83 [Computer one]0m
Forth started life in pocket calculators and is the language that
POSTSCRIPT was based upon. Multitasking, graphics, floating point
arithmetics and QDOS access are all integrated.
3mIMPLEMENTATION NOTES0m
Runs without problems on Amiga-QDOS.
1mFORTH [Digital Precision]0m
Another Forth implementation.
3mIMPLEMENTATION NOTES0m
Not tested on Amiga-QDOS.
1mGST Macro Assembler [GST]0m
The professional Assembler for QDOS. Macro facilities far beyond the
standard. The assembler is small, fast, and produces standard QDOS
relocatable Format. Recently re-vamped by QUANTA programmers.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
Runs without problems on Amiga-QDOS.
1mMetacomco Assembler [Metacomco]0m
Very big (3 overlays), very slow, lots of bugs. Can be used to link
M-Code routines to other Metacomco programs, since the linker for all
Metacomco programs are compatible.
3mIMPLEMENTATION NOTES0m
Not tested on Amiga-QDOS.
1mComputer one Assembler [Computer one]0m
Fast, small, no Macros, no linker.
3mIMPLEMENTATION NOTES0m
Not tested on Amiga-QDOS.
1mGenQL [HiSoft]0m
Together with the MonQL monitor, and a special editor it provides an
integrated environment. A useful Program.
3mIMPLEMENTATION NOTES0m
Works fine on Amiga-QDOS.
1mAssembler Workbench [Eddy Yeung]0m
Another integrated environment for assembler programmers. It provides
on-line Help and an in-line assembler.
3mIMPLEMENTATION NOTES0m
Protected against copying, and available only on Microdrive cartridges.
The cracked Version runs on Amiga-QDOS.
1mQMON monitor [Qjump]0m
A nice M-Code monitor also available as ROM. It is a good tool to have at
hand.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
Works without problems on Amiga-QDOS
1mMonQL monitor [HiSoft]0m
A generally useful monitor/debugger with a corresponding assembler
(GenQL).
3mIMPLEMENTATION NOTES0m
Cannot cope with addresses longer than 20 bits, so you can only debug
programs in CHIP memory. Perhaps some day HiSoft will make a new Version
for Atari/Amiga/Thor2 users. We will be grateful.
--------------------------------------------------------------------------
1m4mSOFTWARE OVERVIEW - EMULATORS0m
1mSolution (MS-DOS emulator) [Digital Precision]0m
Slow, but CGA graphics is included and it is said to be faster than the
Amiga Transformer.
3mIMPLEMENTATION NOTES0m
Not Tested on Amiga-QDOS.
1mCPMulator (CP/M emulator)0m
An 0.5 MHz Z80 with a few bugs.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
Tested briefly on Amiga-QDOS and worked OK.
--------------------------------------------------------------------------
1m4mSOFTWARE OVERVIEW - UTILITIES0m
1mSuper Media Manager [Digital Precision]0m
Compiled SuperBASIC. Contains a useful description of how QDOS handles
Disks.
--------------------------------------------------------------------------
1m4mSOFTWARE OVERVIEW - EDITORS, WORDPROCESSORS, AND GRAPHICS0m
1mEDITOR [Eddy Yeung] [Qjump]0m
This editor comes together with the Assembler Workbench. It is related in
most functions to the well known (at least to Amiga users) Metacomco ED,
but is much faster. Macros are not provided. It is my favourite Editor.
3mIMPLEMENTATION NOTES0m
Runs without problems on Amiga-QDOS.
1mED [Metacomco]0m
You should know it from the Amiga.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
Runs on Amiga-QDOS without problems.
1mC1Edit [Computer one]0m
The editor supplied with all Computer one programs. It is menu driven, but
not very advanced.
3mIMPLEMENTATION NOTES0m
Runs without problems on Amiga-QDOS.
1mEDIT [Digital Precision]0m
Very advanced editor, including a lot of macro features. Compiled
SuperBASIC and very big.
3mIMPLEMENTATION NOTES0m
Not tested on Amiga-QDOS.
1mQuill [Psion]0m
The original wordprocessor that was bundled with the QL. Handles
formatting well, supports bold, italic underline etc., and can create text
only files via print-to-file option.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
Works well on Amiga-QDOS.
1mArchive [Psion]0m
The original Data Base that was bundled with the QL. Although not very
advanced, and though it doesn't handle pictures or sound, it is still
sufficient for most applications. (This is the kind of Data Base, that
makes use of a special Language that looks a little bit like BASIC)
3mIMPLEMENTATION NOTES - 3.22 MJS0m
Runs on Amiga-QDOS without problems.
1mEasel [Psion]0m
The original Business Graphic program that was bundled with the QL. You
may find better programs on the IBM (for example Boing graph), but it is
still state of the art.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
Runs on Amiga-QDOS without problems.
1mAbacus [Psion]0m
The original Spreadsheet that was bundled with the QL. It cannot handle
graphics, but is still state of the art.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
Runs on Amiga-QDOS without problems.
1mXchange [Psion]0m
The combined Quill/Easel/Abacus/Archive program, able to multitask, and
including a 'Task Sequence Language' that allows you to write macros for
all 4 programs.
3mIMPLEMENTATION NOTES - 3.22 MJS0m
You need memory expansion to use this program. Runs on Amiga-QDOS
without problems.
1mText 870m
An advanced Word processor for QDOS supporting proportional type and
varying fonts and type sizes.
3mIMPLEMENTATION NOTES0m
Newer versions run without problems on Amiga-QDOS, though older
Versions may cause trouble since they cause a divide by zero error that
is now trapped by QDOS.
1mGraphiQL [Talent]0m
A picture drawing program for low resolution mode.
3mIMPLEMENTATION NOTES0m
Protected against piracy. The cracked Version runs on Amiga-QDOS
1mTechniQL [Talent]0m
Another drawing program but for high resolution mode. It has interesting
features, including a plotter driver, and may well be worth using.
3mIMPLEMENTATION NOTES0m
The cracked Version runs on Amiga-QDOS but with problems.
1mQL Art0m
A nice picture drawing program.
3mIMPLEMENTATION NOTES0m
Is copy-protected and will not run on Amiga-QDOS.
1mMPaint [Medic Datasystems]0m
The first picture drawing program for the QL that supported the mouse. It
is a Basic program with some M-code extensions.
3mIMPLEMENTATION NOTES0m
The cracked and compiled Version runs on Amiga-QDOS, but with problems
--------------------------------------------------------------------------
1m4mSOFTWARE OVERVIEW - GAMES0m
Games are mostly protected against copying and many are only available on
Microdrive cartridges.
1mChess [Psion]0m
Really good, a classic.
3mIMPLEMENTATION NOTES0m
It will probably never run on the Amiga since it contains TAS
instructions and attempts to change the contents of the operating
system ROM, which is now RAM?
1mMatch (Tennis) [Psion]0m
Another classic.
3mIMPLEMENTATION NOTES0m
It works on the Amiga, but is too fast to play, since the QL had only
1/4 of the Speed.
1mQL Cavern [JMF]0m
Graphic adventure (not comparable of course to Amiga games)
3mIMPLEMENTATION NOTES0m
Not too bad, runs on the Amiga with modifications (Interrupts must be
enabled!)
--------------------------------------------------------------------------
1m4mBIBLIOGRAPHY0m
A list of books/publications that proved useful:
1mQL BOOKS0m
QL Assembly Language Programming by Colin Opie
McGraw-Hill Book Company ISBN 0-07-084777-0
The Sinclair QDOS Companion by Andrew Pennell
Sunshine Books ISBN 0-946408-69-9
Assembly Language Programming on the Sinclair QL by Andrew Pennell
Sunshine Books ISBN 0-946408-42-4
QL SuperBASIC The Definitive Handbook by Jan Jones
First published by McGraw-Hill ISBN 0-07-084784-3
Limited reprint by QUANTA: The Independent QL User Group.
1mAMIGA BOOKS0m
Amiga System Programmer's Guide by Dittrich, Gelfand & Schemmel
Abacus/Data Becker ISBN 1-55755-034-4
Amiga Hardware Reference Manual,
Amiga Intuition Reference Manual,
Amiga ROM Kernel Reference Manual: Exec,
Amiga ROM Kernel Reference Manual: Libraries and Devices
Addison-Wesley Publishing Company Inc.
The 'Kickstart' Guide to the Amiga
Ariadne Software Ltd. ISBN 0 9512921 0 2
1m680X0 BOOKS0m
680X0 Programming by example by Stan Kelly-Bootle
Howard W Sams & Company ISBN 0-672-22544-1
MicroComputer Architecture and programming by John F Wakerly
John Wiley & Sons Inc. ISBN 0-471-50021-6
1mPUBLICATIONS0m
QL World Magazine
(Alas, mo longer in print).
QREVIEW - news, reviews and articles for QL compatibles
(incorporated into IQLR, but...)
IQLR - International QL Report
(...no longer around)
QUANTA - newsletter (by membership).
QUANTA: The independant QL users group.
Membership: Bill Newell, QUANTA (UK),
213 Manor Rd, Benfleet, Essex, SS7 4JD
QLtoday - magazine for QL, QDOS, Sinclair Computers, SMSQ etc...
(bi-monthly, by subscription)
English Office: German Office:
Miracle Systems Ltd., Jochen Merz Software
20 Mow Barton Im stillen Winkel 12
Yate, Bristol 47169 Duisburg
United Kingdom BS17 5NF Germany
Tel: +44 1248 354023 Tel: +49 203 502011
--------------------------------------------------------------------------